home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / pc / LOGIC Apple II 5.25" Library - DOS Part 2 / DOS037.dsk / DISK SORT(3.3).bas < prev    next >
BASIC Source File  |  2012-02-16  |  6KB  |  168 lines

  1. 0  SPEED= 255: HIMEM: 16384:MAX = 70:RWTS = 16384:BUFFER = RWTS +256
  2. 1  IF  PEEK(RWTS) = 72  THEN 5
  3. 2  PRINT  CHR$(4)"BLOAD RWTS,A16384,V"
  4. 3  POKE 16420,65
  5. 5  DIM FILE$(MAX),P%(MAX),T%(MAX),S%(MAX),L%(MAX),E%(MAX),SEQ(MAX)
  6. 6 RD = 1:WR = 2
  7. 10  POKE  -16298,0: TEXT : CALL  -936: GOTO 20
  8. 11  REM PRINT CENTER ROUTINE
  9. 12  CALL  -958: HTAB 20 - LEN(C$)/2
  10. 13  PRINT C$: REM PRINTS LINE
  11. 14  PRINT  CHR$(7)
  12. 15  RETURN 
  13. 20  VTAB 5:C$ = "DISK SORT": GOSUB 11
  14. 30 C$ = "BY - TED COHN": GOSUB 11
  15. 40 C$ = "DATE: DECEMBER 1, 1979": GOSUB 11
  16. 50  VTAB 21: PRINT "  PRESS 'ESC' TO END"
  17. 55  PRINT "< PRESS THE SPACE BAR TO CONTINUE...>";
  18. 60  GET C$
  19. 70  IF C$ =  CHR$(27)  THEN  HOME : END 
  20. 80  IF C$ < >" "  THEN 60
  21. 90  HOME 
  22. 100  VTAB 10: PRINT "INSTRUCTIONS (Y/N)? ";
  23. 110  GET C$: IF C$ = "Y"  THEN 1000
  24. 120  IF C$ < >"N"  THEN 110
  25. 130  HOME 
  26. 140  PRINT "THERE  ARE  THREE TYPES  OF  DIRECTORY"
  27. 150  PRINT "<CTRL-J>SORTS AVAILABLE: "
  28. 160  PRINT : PRINT : PRINT "1   -   SORT BY NAME"
  29. 170  PRINT : PRINT "2   -   SORT BY TYPE"
  30. 180  PRINT : PRINT "3   -   SORT BY SECTOR LENGTHS"
  31. 190  PRINT : PRINT : CALL  -958
  32. 200  PRINT "ENTER NUMBER OF DESIRED SORT? ";
  33. 220  GET S$
  34. 230  IF S$ = "1"  THEN 500
  35. 240  IF S$ = "2"  THEN 600
  36. 250  IF S$ = "3"  THEN 700
  37. 260  GOTO 220
  38. 500  GOSUB 800: GOSUB 2000: GOSUB 3000: GOTO 9000
  39. 600  GOSUB 800: GOSUB 2000: GOSUB 3000: GOSUB 4000: GOTO 9000
  40. 700  GOSUB 800: GOSUB 2000: GOSUB 3000: GOSUB 5000: GOTO 9000
  41. 800  HOME : VTAB 10
  42. 810 C$ = "PLEASE INSERT DISK INTO DRIVE 1": GOSUB 11
  43. 820 C$ = "<SPACE BAR TO CONTINUE>": GOSUB 11
  44. 830  IF  PEEK( -16384) < >160  THEN 830
  45. 840  POKE  -16368,0
  46. 850  HOME 
  47. 860  VTAB 7: HTAB 15: FLASH : PRINT "DISK SORT"
  48. 870  NORMAL 
  49. 880  RETURN 
  50. 1000  HOME 
  51. 1010  HTAB 12: PRINT "CATALOG SORT": PRINT : PRINT 
  52. 1020  PRINT "    THIS  PROGRAM  WILL  REARRANGE  THE "
  53. 1030  PRINT "FILE NAMES OF  YOUR  CATALOG INTO ALPHA-"
  54. 1040  PRINT "BETICAL ORDER. IN ADDITION, YOU HAVE THE"
  55. 1050  PRINT "OPTION OF GROUPING FILES BY THEIR TYPES."
  56. 1060  PRINT "ORDER IS INTEGER, APPLESOFT, BINARY AND "
  57. 1070  PRINT "TEXT FILES.<CTRL-J>"
  58. 1080  PRINT "    THIS WILL MAKE  YOUR  CATALOG  LOOK "
  59. 1090  PRINT "VERY NEAT AND CLEAN... IT WILL ALSO MAKE"
  60. 1100  PRINT "FINDING PROGRAM NAMES A SINCH!"
  61. 1110  PRINT : PRINT : PRINT "< PRESS SPACE BAR TO CONTINUE >";
  62. 1120  GET A$: IF A$ < >" "  THEN 1120
  63. 1130  HOME : PRINT "(1) SORT BY NAME"
  64. 1140  PRINT : PRINT "    ENTER '1' WHEN ASKED FOR SORT TYPE."
  65. 1150  PRINT "    THIS WILL ONLY ALPHABETIZE THE FILE"
  66. 1160  PRINT "    NAMES. WHEN COMPLETED, THE PROGRAM"
  67. 1170  PRINT "    WILL CLEAR UP ALL DIRECTORY PROBLEMS"
  68. 1180  PRINT "(2) SORT BY TYPE": PRINT 
  69. 1190  PRINT "    THIS DOES THE SAME AS THE ABOVE, BUT";
  70. 1200  PRINT "    ALSO PLACES THE FILES INTO GROUPINGS";
  71. 1210  PRINT "    BY TYPE (I.E. I,A,B,T).": PRINT 
  72. 1220  PRINT "(3) SORTING BY LENGTH": PRINT 
  73. 1230  PRINT "    THIS DOES THE SAME AS THE 1ST SORT,"
  74. 1240  PRINT "    BUT  ALSO  PLACES  THE  FILE  INTO"
  75. 1250  PRINT "    SEQUENCIAL ORDER BY SECTOR LENGTH."
  76. 1260  PRINT : PRINT "< PRESS SPACE BAR TO CONTINUE >";
  77. 1270  GET A$: IF A$ < >" "  THEN 1270
  78. 1280  GOTO 130
  79. 1999  END 
  80. 2000  VTAB 10:C$ = "READING DIRECTORY": GOSUB 11
  81. 2010 RD = 1:WR = 2:N =  -1
  82. 2020  FOR S = 15 TO 1  STEP  -1
  83. 2030  POKE 0,17: POKE 1,S: POKE 2,RD
  84. 2040  CALL RWTS
  85. 2050  FOR I = BUFFER +14 TO BUFFER +255  STEP 35
  86. 2060  IF  PEEK(I) = 0  THEN 2180
  87. 2070  IF  PEEK(I -3) = 255  THEN 2160
  88. 2080 N = N +1
  89. 2090 P%(N) =  PEEK(I -1)
  90. 2100 T%(N) =  PEEK(I -3)
  91. 2110 S%(N) =  PEEK(I -2)
  92. 2120 L%(N) =  PEEK(I +30)
  93. 2130 E%(N) =  PEEK(I +31)
  94. 2140 FILE$(N) = ""
  95. 2150  FOR J = 0 TO 29:FILE$(N) = FILE$(N) + CHR$( PEEK(I +J)): NEXT J
  96. 2160  NEXT I
  97. 2170  NEXT S
  98. 2180  FOR I = 0 TO N:SEQ(I) = I: NEXT 
  99. 2190  RETURN 
  100. 3000  VTAB 10:C$ = "SORTING DIRECTORY": GOSUB 11
  101. 3005 FLAG = 0
  102. 3010  FOR I = 0 TO N -1
  103. 3020 X = SEQ(I):Y = SEQ(I +1)
  104. 3030  IF FILE$(X) < = FILE$(Y)  THEN 3060
  105. 3040 SEQ(I) = Y:SEQ(I +1) = X
  106. 3050 FLAG = 1
  107. 3060  NEXT I
  108. 3070  IF FLAG = 1  THEN 3005
  109. 3080  RETURN 
  110. 4000  REM ----SORT BY TYPE----
  111. 4010 FLAG = 0
  112. 4020  FOR TYPE = 0 TO 4: IF TYPE = 3  THEN 4070
  113. 4030  FOR I = 0 TO N
  114. 4040 X = P%(I) -128: IF X <0  THEN X = X +128
  115. 4050  IF X = TYPE  THEN SEQ(FLAG) = I:FLAG = FLAG +1
  116. 4060  NEXT I
  117. 4070  NEXT TYPE
  118. 4080  RETURN 
  119. 5000 FLAG = 0
  120. 5010  FOR I = 0 TO N -1
  121. 5020  IF L%(SEQ(I)) < = L%(SEQ(I +1))  THEN 5060
  122. 5030 X = SEQ(I):SEQ(I) = SEQ(I +1):SEQ(I +1) = X
  123. 5040 FLAG = 1
  124. 5060  NEXT I
  125. 5070  IF FLAG = 1  THEN 5000
  126. 5080  RETURN 
  127. 6000  FOR I = 0 TO N: PRINT L%(SEQ(I)): NEXT 
  128. 6010  END 
  129. 7000  FOR Z = BUFFER TO BUFFER +255: POKE Z,0: NEXT : RETURN 
  130. 8000  RESUME 
  131. 9000  REM  ----WRITE TO DISK----
  132. 9010 C$ = "WRITING DIRECTORY": VTAB 10: GOSUB 11
  133. 9020 I = 0
  134. 9030  FOR S = 15 TO 1  STEP  -1
  135. 9040  GOSUB 7000: REM CLEAR BUFFER
  136. 9050  POKE BUFFER +1,17: POKE BUFFER +2,S -1
  137. 9060  FOR J = BUFFER +11 TO BUFFER +255  STEP 35
  138. 9070 X = SEQ(I)
  139. 9080  POKE J,T%(X): POKE J +1,S%(X)
  140. 9090  POKE J +2,P%(X): POKE J +33,L%(X)
  141. 9100  POKE J +34,E%(X)
  142. 9110  FOR K = 1 TO 30: POKE J +K +2, ASC( MID$ (FILE$(X),K,1)): NEXT 
  143. 9120  POKE 0,17: POKE 1,S: POKE 2,WR
  144. 9130  CALL RWTS
  145. 9140 I = I +1: IF I >N  THEN 9200
  146. 9150  NEXT J
  147. 9160  NEXT S
  148. 9200  IF S = 0  THEN 9300
  149. 9210  GOSUB 7000
  150. 9220  POKE 0,17: POKE 1,S -1: POKE 2,WR
  151. 9225  IF S >1  THEN  POKE BUFFER +1,17: POKE BUFFER +2,S -2
  152. 9230  CALL RWTS
  153. 9300 C$ = "SORT COMPLETED": VTAB 10: GOSUB 11
  154. 9310  PRINT : PRINT  CHR$(4)"CATALOG"
  155. 9320  END 
  156. 9999  REM   *** DISK SORT ***
  157. 10000  REM     DONATED TO                THE APPLE CORE             OF SAN FRANCISCO
  158. 10010  REM  DECEMBER 1, 1979               BY TED COHN
  159. 10030  REM --------------------
  160. 10040  REM   PROGRAM SEGMENTS
  161. 10050  REM 1000-1300 INSTRUCTIONS
  162. 10060  REM 2000-2999 READ CATALOG
  163. 10070  REM 3000-3999 ALPHA SORT
  164. 10080  REM 4000-4100 TYPE SORT
  165. 10090  REM 5000-5100 SECTOR SORT
  166. 10100  REM HOPE YOU HAVE FUN WITH
  167. 10110  REM THIS SORT ROUTINE!!!!
  168. 10120  REM --------------------    TED COHN, 1411 ARLINGTON,   EL CERRITO, CA.  94530      (415) 529-2502